package com.qf.service.impl;

import com.qf.dao.UserDao;
import com.qf.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

//@Component
@Service
@PropertySource({"classpath:jdbc.properties","classpath:redis.properties"})
public class OrderServiceImpl implements OrderService {

    /**
     * ① 按照变量类型查找对象，如果能找到唯一的一个该类型对象，使用
     * ② 如果找到多个,会看这多个对象上是否有@Primary注解，如果有唯一的一个上面有这个注解，使用
     * ③ 如果找到多个，同时有多个都加了@Primary注解,查找失败
     * ④ 如果类型有多个，没有通过@Primary修饰，会通过当前变量名查找对象（通过名字找对象），找不到报错
     */
    @Autowired
//    @Qualifier("userDaoImpl1") //一旦通过这个注解指定了具体想要注入的对象名称，那么@Autowired查找策略都失效了

//    @Resource
    private UserDao userDao;

    @Value("${jdbc.username}")
    private String desc;

    @Override
    public void show() {
        System.out.println("dao:" + userDao);
        System.out.println("desc:" + desc);

        System.out.println("==================");
    }
}
